package com.mirror.utils.http;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.util.Log;

import com.mirror.llk.utils.Interface;
import com.mirror.utils.base.BaseApplication;
import com.mirror.utils.net.NetHandler;

public class HttpUtils {

	/** TAG */
	private static final String TAG = "HttpUtils";

	/** 连接池中取连接的超时时间 */
	public static final int HTTP_TIME_OUT = 1000;

	/** 连接超时 */
	public static final int HTTP_CONNECTION_TIME_OUT = 2 * 1000;

	/** 请求超时 */
	public static final int HTTP_SO_TIME_OUT = 5 * 1000;

	// /**
	// * 发起HTTP POST请求
	// *
	// * @param url
	// * 请求地址
	// * @param params
	// * 键值对参数
	// * @return 响应报文
	// * @throws IOException
	// * @throws ParseException
	// */
	// public static String post(String url, NameValuePair... params) throws
	// ParseException, IOException {
	// if (!NetworkHandler.doCheck()) {
	// return SystemInterface.INTERFACE_SOCKET_EXCEPTION_CODE;
	// }
	// Log.i(TAG, MessageFormat.format("准备POST请求，地址：[{0}]", url));
	// // HTTP客户端
	// HttpClient client = ApplicationContext.getHttpClient();
	//
	// // 编码请求参数
	// List<NameValuePair> formparams = new ArrayList<NameValuePair>();
	// for (NameValuePair p : params) {
	// formparams.add(p);
	// }
	// UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
	// HTTP.UTF_8);
	// // 创建POST请求
	// HttpPost request = new HttpPost(url);
	// request.setEntity(entity);
	// Log.i(TAG, MessageFormat.format("发起请求，发送：[{0}]",
	// EntityUtils.toString(entity, HTTP.UTF_8)));
	// // 发送请求
	// HttpResponse response = client.execute(request);
	// if (response != null && response.getStatusLine().getStatusCode() ==
	// HttpStatus.SC_OK) {
	// HttpEntity resEntity = response.getEntity();
	// String backup = (resEntity == null) ? null :
	// EntityUtils.toString(resEntity, HTTP.UTF_8);
	// Log.i(TAG, MessageFormat.format("接收响应，返回：[{0}]", backup));
	// return backup;
	// } else {
	// Log.i(TAG, SystemInterface.INTERFACE_BAD_REQUEST_EXCEPTION_CODE);
	// return SystemInterface.INTERFACE_BAD_REQUEST_EXCEPTION_CODE;
	// }
	// }
	//

	/**
	 * @param url
	 *            请求地址
	 * @param xml
	 *            请求报文
	 * @return 响应报文
	 */
	public static String post(String url, String xml) {
		if (NetHandler.doCheck()) {
			Log.i(TAG, Interface.ERROR_MESSAGE.get(Interface.ERROR_CODE_10000));
			return Interface.ERROR_CODE_10000;
		}
		try {
			Log.i(TAG, "准备POST请求，地址：" + url + "，报文：" + xml);
			// 取得HTTP客户端
			HttpClient client = BaseApplication.getHttpClient();
			// 创建POST请求
			HttpPost request = new HttpPost(url);
			request.setEntity(new StringEntity(xml, HTTP.UTF_8));
			// 发送请求
			HttpResponse response = client.execute(request);
			if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK && response.getEntity() != null) {
				String backup = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
				Log.i(TAG, "接收响应，返回：" + backup);
				return backup;
			} else {
				Log.i(TAG, Interface.ERROR_MESSAGE.get(Interface.ERROR_CODE_9999));
				return Interface.ERROR_CODE_9999;
			}
		}
		catch (Exception e) {
			Log.i(TAG, Interface.ERROR_MESSAGE.get(Interface.ERROR_CODE_9997));
			return Interface.ERROR_CODE_9997;
		}
	}

	// /**
	// * 发起HTTP GET请求
	// *
	// * @param url
	// * 请求地址
	// * @param params
	// * 键值对参数
	// * @return 响应报文
	// * @throws IOException
	// * @throws ClientProtocolException
	// */
	// public static String get(String url, NameValuePair... params) throws
	// ClientProtocolException, IOException {
	// if (!NetworkHandler.doCheck()) {
	// return SystemInterface.INTERFACE_SOCKET_EXCEPTION_CODE;
	// }
	// // HTTP客户端
	// HttpClient client = ApplicationContext.getHttpClient();
	// // 编码请求参数
	// List<NameValuePair> formparams = new ArrayList<NameValuePair>();
	// for (NameValuePair p : params) {
	// formparams.add(p);
	// }
	// String param = URLEncodedUtils.format(formparams, HTTP.UTF_8);
	// // 创建GET请求
	// HttpGet request = new HttpGet(url + Constant.QUESTION_MARK + param);
	// Log.i(TAG, MessageFormat.format("发起GET请求，发送：[{0}?{1}]", url, param));
	// // 发送请求
	// HttpResponse response = client.execute(request);
	// if (response != null && response.getStatusLine().getStatusCode() ==
	// HttpStatus.SC_OK) {
	// HttpEntity resEntity = response.getEntity();
	// String backup = EntityUtils.toString(resEntity, HTTP.UTF_8);
	// Log.i(TAG, MessageFormat.format("接收响应，返回：[{0}]", backup));
	// return backup;
	// } else {
	// Log.i(TAG, SystemInterface.INTERFACE_BAD_REQUEST_EXCEPTION_CODE);
	// return SystemInterface.INTERFACE_BAD_REQUEST_EXCEPTION_CODE;
	// }
	// }
	//
	// /**
	// * 发起HTTP GET请求远程资源
	// *
	// * @param remoteUrl
	// * 请求地址
	// * @return 输入流
	// * @throws IOException
	// * @throws ClientProtocolException
	// */
	// public static InputStream downloadRemoteResource(String remoteUrl) throws
	// ClientProtocolException, IOException {
	// Log.i(TAG, MessageFormat.format("发起GET请求，发送：[{0}]", remoteUrl));
	// // HTTP客户端
	// HttpClient client = ApplicationContext.getHttpClient();
	// HttpGet request = new HttpGet(remoteUrl);
	// // 发送请求
	// HttpResponse response = client.execute(request);
	// if (response != null && response.getStatusLine().getStatusCode() ==
	// HttpStatus.SC_OK) {
	// Log.i(TAG, MessageFormat.format("接收响应，返回：[{0}]",
	// response.getStatusLine().getStatusCode()));
	// return response.getEntity().getContent();
	// } else {
	// Log.i(TAG, MessageFormat.format("请求失败，返回：[{0}]",
	// response.getStatusLine().getStatusCode()));
	// }
	// Log.i(TAG, Constant.BAD_REQUEST_EXCEPTION);
	// return null;
	// }

}